1. Field of the Invention
The invention relates generally to clustered storage systems and more specifically relates to methods and structure for direct pass through of “fast path” I/O requests in a clustered storage system.
2. Related Patents
This patent application is related to the following commonly owned United States patent applications, all filed on the same date herewith and all of which are herein incorporated by reference:                U.S. patent application Ser. No. 13/432,131, entitled METHODS AND STRUCTURE FOR TASK MANAGEMENT IN STORAGE CONTROLLERS OF A CLUSTERED STORAGE SYSTEM;        U.S. patent application Ser. No. 13/432,223, entitled METHODS AND STRUCTURE FOR LOAD BALANCING OF BACKGROUND TASKS BETWEEN STORAGE CONTROLLERS IN A CLUSTERED STORAGE ENVIRONMENT;        U.S. patent application Ser. No. 13/432,225, entitled METHODS AND STRUCTURE FOR TRANSFERRING OWNERSHIP OF A LOGICAL VOLUME BY TRANSFER OF NATIVE-FORMAT METADATA IN A CLUSTERED STORAGE ENVIRONMENT;        U.S. patent application Ser. No. 13/432,232, entitled METHODS AND STRUCTURE FOR IMPLEMENTING LOGICAL DEVICE CONSISTENCY IN A CLUSTERED STORAGE SYSTEM;        U.S. patent application Ser. No. 13/432,238, entitled METHODS AND STRUCTURE FOR IMPROVED I/O SHIPPING IN A CLUSTERED STORAGE SYSTEM;        U.S. patent application Ser. No. 13/432,220, entitled METHODS AND STRUCTURE FOR MANAGING VISIBILITY OF DEVICES IN A CLUSTERED STORAGE SYSTEM;        U.S. patent application Ser. No. 13/432,150, entitled METHODS AND STRUCTURE FOR IMPROVED BUFFER ALLOCATION IN A STORAGE CONTROLLER; and        U.S. patent application Ser. No. 13/432,138, entitled METHODS AND STRUCTURE FOR RESUMING BACKGROUND TASKS IN A CLUSTERED STORAGE ENVIRONMENT.        
3. Discussion of Related Art
In the field of data storage, customers demand highly resilient data storage systems that also exhibit fast recovery times for stored data. One type of storage system used to provide both of these characteristics is known as a clustered storage system.
A clustered storage system typically comprises a number of storage controllers, wherein each storage controller processes host Input/Output (I/O) requests directed to one or more logical volumes. The logical volumes reside on portions of one or more storage devices (e.g., hard disks) coupled with the storage controllers. Often, the logical volumes are configured as Redundant Array of Independent Disks (RAID) volumes in order to ensure an enhanced level of data integrity and/or performance.
A notable feature of clustered storage environments is that the storage controllers are capable of coordinating processing of host requests (e.g., by shipping I/O processing between each other) in order to enhance the performance of the storage environment. This includes intentionally transferring ownership of a logical volume from one storage controller to another. For example, a first storage controller may detect that it is currently undergoing a heavy processing load, and may assign ownership of a given logical volume to a second storage controller that has a smaller processing burden in order to increase overall speed of the clustered storage system. Other storage controllers may then update information identifying which storage controller presently owns each logical volume. Thus, when an I/O request is received at a storage controller that does not own the logical volume identified in the request, the storage controller may “ship” the request to the storage controller that presently owns the identified logical volume.
FIG. 1 is a block diagram illustrating an example of a prior art clustered storage system 150. Clustered storage system 150 is indicated by the dashed box, and includes storage controllers 120, switched fabric 130, and logical volumes 140. Note that a “clustered storage system” (as used herein) does not necessarily include host systems and associated functionality (e.g., hosts, application-layer services, operating systems, clustered computing nodes, etc.). However, storage controllers 120 and hosts 110 may be tightly integrated physically. For example, storage controllers 120 may comprise Host Bus Adapters (HBA's) coupled with a corresponding host 110 through a peripheral bus structure of host 110. According to FIG. 1, hosts 110 provide I/O requests to storage controllers 120 of clustered storage system 150. Storage controllers 120 are coupled via switched fabric 130 (e.g., a Serial Attached SCSI (SAS) fabric or any other suitable communication medium and protocol) for communication with each other and with a number of storage devices 142 on which logical volumes 140 are stored.
FIG. 2 is a block diagram illustrating another example of a prior art clustered storage system 250. In this example, clustered storage system 250 processes I/O requests from hosts 210 received via switched fabric 230. Storage controllers 220 are coupled for communication with storage devices 242 via switched fabric 235, which may be integral with or distinct from switched fabric 230. Storage devices 242 implement logical volumes 240. Many other configurations of hosts, storage controllers, switched fabric, and logical volumes are possible for clustered storage systems as a matter of design choice. Further, in many high reliability storage systems, all the depicted couplings may be duplicated for redundancy. Additionally, the interconnect fabrics may also be duplicated for redundancy.
While clustered storage systems provide a number of performance benefits over more traditional storage systems described above, the speed of a storage system still typically remains a bottleneck to the overall speed of a processing system utilizing the storage system.
Some clustered storage systems provide storage controllers tightly coupled with corresponding drivers in attached host systems (e.g., in a system such as that of FIG. 2 in which the storage controllers are tightly coupled with a driver of a corresponding host system—i.e., where the storage controller is an HBA within the host system). In some such controllers, the storage controller provides multiple types of interface capabilities (i.e., multiple APIs). A first standard interface may be provided wherein the driver constructs an I/O request directed to a logical volume (e.g., directed to a RAID logical volume). The I/O request addresses logical block addresses of the logical volume. The storage controller then uses a mapping structure within the controller to map the I/O request to corresponding physical storage locations on the one or more storage devices that comprise the logical volume. For these requests, the storage controller also manages all related redundancy computations and management of associated redundancy information (i.e., for RAID logical volumes). The storage controller also manages computations related to mapping from logical addresses of the identified logical volume to physical addresses or affected storage devices.
Although these storage controllers can provide significant computational power to perform the requisite logical to physical mapping and any required redundancy computations, it is often the case that the host systems possess significantly more computational resources and power than do any of the multiple storage controllers of the clustered storage system. Thus, in such tightly coupled driver-controller configurations, the storage controller may also provide an optional bypass mechanism so that the driver software on an attached host system may perform the logical to physical mapping computations and may also provide the redundancy computations to help manage associated redundancy information. For example, in some LSI Corporation storage controllers such a bypass mechanism is referred to as a “fast path” interface. In these controllers, the “fast path” driver software of the attached host system constructs I/O requests destined directly to the relevant physical locations of the physical storage devices coupled with the storage controller. The storage controller providing such a “fast path” option provides the driver software with essentially the same mapping information that the storage controller uses for mapping logical addresses of a logical volume to physical addresses of the storage devices of the volume. Fast path enabled LSI storage controllers and circuits generally implement the “fast path” as a custom designed circuit that can process the driver's I/O requests to physical storage devices very quickly (since the controller need not perform the mapping and RAID redundancy computations).
As noted above, in clustered storage systems, a corresponding one of the storage controllers of the cluster owns each particular logical volume configured in the cluster (provisioned by the plurality of storage devices). As further noted above, ownership of a logical volume may be transferred among the plurality of storage controllers for a variety of reasons (i.e., by cooperative information exchanges among the controllers to balance the processing load among the controller or in the case of a planned or unplanned failover of a storage controller). When ownership of a volume is transferred from one controller to another, the mapping/ownership information in the driver software of attached host systems is eventually updated by some attached storage controller to indicate an appropriate storage controller to which standard logical volume requests are to be directed as well as to which physical storage devices “fast path” requests are to be directed. However, it is a problem if the driver has already issued a number of “fast path” requests after the storage controllers have transferred ownership of a volume and/or some storage devices but prior to receiving an update of the mapping information. Further, the driver software of a host system may continue to issue requests (via the standard RAID path or the “fast path” to the storage controller) before receiving its update of the mapping structures. Prior controller architectures may simply return an error status for such I/O requests that are generated based on “stale” mapping information in the driver software of the host system. Such an error could trigger error recovery procedures that may negatively impact overall performance of the clustered storage system and may cause confusion for a user/administrator.
Thus it is an ongoing challenge to manage I/O requests (logical volume requests or “fast path” requests) issued by a driver of a host with outdated or stale mapping/ownership information.